package cn.stu.cms.util;


import cn.hutool.core.util.StrUtil;
import cn.hutool.jwt.JWT;
import lombok.extern.log4j.Log4j2;


/**
 * jwt
 *
 * @author gh
 * @date 2023/09/14
 */

@Log4j2
public class JwtHelper {

    /**
     * 令牌签名密钥
     */
    private static final String TOKEN_SIGN_KEY = "6666";

    /**
     * 创建令牌
     *
     * @param userId 用户标识
     * @return {@link String}
     */
    public static String createToken(Long userId) {
        return JWT.create()
                .setPayload("userId", userId)
                .setKey(TOKEN_SIGN_KEY.getBytes())
                .sign();
    }

    /**
     * 获取用户标识
     *
     * @param token 令 牌
     * @return {@link Long}
     */
    public static Long getUserId(String token) {
        try {
            if (StrUtil.isBlank(token)) {
                return null;
            }
            JWT jwt = JWT.of(token);
            return Long.valueOf(jwt.getPayload("userId").toString());
        } catch (Exception e) {
            log.error(e.getMessage());
            return null;
        }
    }

    /**
     * 检查令牌
     *
     * @param token 令 牌
     * @return boolean
     */
    public static boolean checkToken(String token) {
        if (StrUtil.isBlank(token)) {
            return Boolean.FALSE;
        }
        return JWT.of(token).setKey(TOKEN_SIGN_KEY.getBytes()).verify();
    }
}
